package strategy;

import root.friendship.GerenciadorAmizade;
import root.item.GerenciadorItem;
import root.loan.GerenciadorEmprestimo;
import root.message.GerenciadorMensagem;
import root.user.User;

public class AbstractStrategyFactory implements AbstractStrategyFactoryIF{

	private static AbstractStrategyFactory instance = null;
	
	protected AbstractStrategyFactory(){
		instance = this;
	}
	
	public static AbstractStrategyFactory getInstance(){
		if(instance == null){
			return new AbstractStrategyFactory();
		} else {
			return instance;
		}
	}
	
	@Override
	public GerenciadorAmizadeIF criaGerenciadorAmizade(User arg0) {
		return new GerenciadorAmizade(arg0);
	}

	@Override
	public GerenciadorEmprestimoIF criaGerenciadorEmprestimo(User arg0, GerenciadorItemIF g) {
		return new GerenciadorEmprestimo(arg0, g);
	}

	@Override
	public GerenciadorItemIF criaGerenciadorItem(User arg0) {
		return new GerenciadorItem();
	}

	@Override
	public GerenciadorMensagemIF criaGerenciadorMensagem(User arg0) {
		return new GerenciadorMensagem(arg0);
	}

}
